A person today uses a number of computing devices to perform various tasks during the course of their day. For instance, a person/user may use a laptop for work, a tablet for entertainment, a smartphone for phone calls, etc. Further, given the convergence of capabilities amongst the various computing devices, the user may use any of the computing devices to perform many of their tasks. However, once a user begins a task in one computing device, there is very limited ability to continue the task in another computing device without an inordinate amount of manual effort. The computing devices do not automatically synchronize with each other to facilitate such a migration of task amongst computing devices without manual intervention.
For example, a user might begin playing a video game Angry Birds® in their smartphone while on their way back home from work. Once home, the user might prefer to continue playing the game in their tablet. To do so, the user must first install the video game Angry Birds® in both their smartphone and their tablet. Next, the user might have to manually save the current playing state in a remote server and use the saved playing state to manually resume playing the game at the tablet (if such a feature is available for the game). There is, however, no means for the user to simply stop using the smartphone and pick up the tablet and resume playing the game in the tablet. These computing devices simply do not automatically synchronize with each other to allow the user to interoperate them without requiring any manual effort.
Further, the problem of interoperability amongst devices worsens as the user adds more devices that the user uses to perform her various tasks. Each new device might have a completely different capability, making even manual effort to synchronize and use these various devices a challenge. For one, the user might have to manually determine which of the devices have sufficient resources to support an application and install the application in each of those devices. This leads to a fragmentation of capabilities among the various devices, where one subset of devices can run one application while another subset of devices can run another application. Such fragmentation can cause confusion and inconvenience to the user as the user will have to remember the various fragmentations when wanting to interoperate amongst the devices.
Accordingly, the known techniques for enabling multiple computing devices used by a person to interoperate with one another are limited in their capabilities and suffers from at least the above constraints and deficiencies.